package org.patterns.behavior.chainofresponsibility;


/**
 * Approver类是一个抽象类，用于定义审批者的通用行为。
 * 它维护一个后继对象，允许审批请求按照链式结构传递。
 * 它还包含审批者的姓名，以便在审批过程中进行标识。
 */
public abstract class Approver {
	/**
	 * successor属性用于存储下一个审批者，
	 * 以便将审批请求传递给下一个审批者。
	 */
	protected Approver successor;
	/**
	 * name属性用于存储审批者的姓名。
	 */
	protected String name;

	/**
	 * 构造方法，初始化审批者的姓名。
	 *
	 * @param name 审批者的姓名。
	 */
	public Approver(String name) {
		this.name = name;
	}

	/**
	 * setSuccessor方法用于设置当前审批者的后继审批者。
	 * 这样可以形成一个审批链，当当前审批者无法处理请求时，
	 * 可以将请求传递给后继审批者。
	 *
	 * @param successor 当前审批者的后继审批者。
	 */
	public void setSuccessor(Approver successor) {
		this.successor = successor;
	}
	
	/**
	 * processRequest方法是一个抽象方法，用于处理购买请求。
	 * 具体的处理逻辑由子类实现。
	 *
	 * @param request 购买请求对象，包含请求的详细信息。
	 */
	public abstract void processRequest(PurchaseRequest request);
}

